extends 技能基类

class_name 投射物技能

@export var 投射物场景: PackedScene

@export var 最大射程:int = 10
@export var 最小射程:int = 1

@export var 动画名称:String = "shoot"
@export var 发射投射物的动画帧序号:int = 7


func 开始(目标网格:Vector2i, 技能结束回调: Callable)	:
	super.开始(目标网格, 技能结束回调)
	
	角色.面向目标(目标网格)
	角色.播放技能动画(动画名称, 发射投射物的动画帧序号, 发射投射物, Callable())
	
	
func 发射投射物():
	var 投射物 = 投射物场景.instantiate()	
	get_tree().current_scene.add_child(投射物)
	
	投射物.set_up(结束, 角色, 目标网格)
	

func 获取技能范围(起点:Vector2i = 角色.当前网格坐标) -> Array[Vector2i]:
	var arr: = 网格管理器.获取范围网格集合(起点, 最大射程)
	var results:Array[Vector2i] = []
	
	for b in arr:
		
		if 网格管理器.是否是障碍物网格(b):
			continue
		if 网格管理器.是否被队友占用网格(b, 角色):
			continue
		if 网格管理器.判断两网格连线间是否有障碍物(起点, b):
			continue
			
		var path = 网格管理器.获取导航网格路径(起点, b)
		var len = 网格管理器.获取网格路径长度(path)
		if len>最小射程 and len<=最大射程:
			results.append(b)		
		
	return results	
